﻿<?xml version="1.0" encoding="utf-8" ?>
<coder name="ProtoGSCli" version="1">
    <includes>
        <include file="commondataproto.xml" />
        <include file="commongamedata.xml" />
        <include file="cli-common.xml" />
    </includes>
    <types>
        <type name="CLTDT_SELF_EQUIPTMENTSINFO">
            <!--包裹已打开容量-->
            <item name="PackgeOpenSize" type="word" />
            <!--包裹-->
            <item name="BodyPackge" type="DT_ITEMINFO" count="MAX_BODYPACKAGE_COUNT" />
            <!--武器装备-->
            <item name="Equiptments" type="DT_ITEMINFO" count="MAX_BODYEQUIPTMENT_COUNT" />
        </type>
        <!-- 客户端进入游戏服务器 -->
        <type name="PKT_CLIGS_ENTERGS_REQ">
            <item name="UserType" type="tstring" count="USERTYPE_LEN" />
            <item name="UserID" type="tstring" count="PTID_LEN" />
            <item name="RoleName" type="tstring" count="ROLENAME_LEN" />
        </type>
        <type name="PKT_CLIGS_ENTERGS_ACK">
            <item name="ErrCode" type="int" />
            <item name="UserType" type="tstring" count="USERTYPE_LEN" />
            <item name="UserID" type="tstring" count="PTID_LEN" />
            <item name="RoleName" type="tstring" count="ROLENAME_LEN" />
        </type>
        <!-- 玩家自身基本属性通知 -->
        <type name="PKT_CLIGS_SELF_INFO_NTF">
            <item name="ObjID" type="dword" />
            <!--场景编号-->
            <!--item name="SceneID" type="tstring" count="MAX_SCENEID_LEN" /-->
            <item name="SceneTypeID" type="dword" />
            <!--职业-->
            <item name="Career" type="byte" />
            <!--等级-->
            <item name="Level" type="byte" />
            <!-- 脸型 -->
            <item name="Face" type="byte" />
            <!-- 发型 -->
            <item name="Hair" type="byte" />
            <!--发色-->
            <item name="HairColor" type="byte" />
            <!--技能信息-->
            <item name="RoleSkill" type="DT_SKILLINFO_SAVE" count="MAX_ROLESKILL_COUNT" />
            <!--基本信息-->
            <item name="BaseInfo" type="CLTDT_SELF_BASEINFO" />
            <item name="EquiptmentsInfo" type="CLTDT_SELF_EQUIPTMENTSINFO" />
        </type>
        <!-- 玩家对象出现通知 -->
        <type name="PKT_CLIGS_ROLE_APPEAR_NTF">
            <item name="ObjID" type="dword" />
            <item name="AppearType" type="byte" />
            <item name="BaseInfo" type="CLTDT_SELF_BASEINFO" />
            <item name="AvatarInfo" type="CLTDT_AVATAR_INFO" />
        </type>
        <!-- NPC对象出现通知 -->
        <type name="PKT_CLIGS_NPC_APPEAR_NTF">
            <item name="ObjID" type="dword" />
            <item name="AppearType" type="byte" />
            <item name="NpcType" type="word" />
            <item name="BaseInfo" type="CLTDT_SELF_BASEINFO" />
        </type>
        <!-- 对象消失通知 -->
        <type name="PKT_CLIGS_OBJ_DISAPPEAR_NTF">
            <item name="ObjID" type="dword" />
            <item name="DisappearType" type="byte" />
        </type>
        <!-- 玩家移动请求 -->
        <type name="PKT_CLIGS_ROLE_MOVE_REQ">
            <item name="TimeStamp" type="dword" />
            <!--位置-->
            <!--item name="Layer" type="byte" />
            <item name="PosX" type="dword" />
            <item name="PosY" type="dword" />
            <item name="PosZ" type="dword" />
            <item name="Dir" type="word" /-->
            <item name="Postion" type="Base3dPosition" />
            <item name="MoveType" type="byte" />
            <item name="MoveGait" type="byte" />
            <item name="ActionID" type="byte" />
            <!--mland2 特殊定义-->
        </type>
        <!-- 玩家移动应答 -->
        <type name="PKT_CLIGS_ROLE_MOVE_ACK">
            <item name="ErrCode" type="int" />
            <item name="TimeStamp" type="dword" />
            <!--item name="Layer" type="byte" />
            <item name="PosX" type="dword" />
            <item name="PosY" type="dword" />
            <item name="PosZ" type="dword" />
            <item name="Dir" type="word" /-->
            <item name="Postion" type="Base3dPosition" />
            <item name="MoveType" type="byte" />
            <item name="MoveGait" type="byte" />
        </type>
        <!-- 对象移动通知 -->
        <type name="PKT_CLIGS_OBJ_MOVE_NTF">
            <item name="TimeStamp" type="dword" />
            <item name="ObjID" type="dword" />
            <!--位置-->
            <!--item name="Layer" type="byte" />
            <item name="PosX" type="dword" />
            <item name="PosY" type="dword" />
            <item name="PosZ" type="dword" />
            <item name="Dir" type="dword" />
            <item name="VelocityX" type="dword" />
            <item name="VelocityY" type="dword" />
            <item name="VelocityZ" type="dword" /-->
            <item name="Postion" type="Base3dPosition" />
            <item name="MoveType" type="byte" />
            <item name="MoveGait" type="byte" />
            <item name="ActionID" type="byte" />
            <item name="TargetID" type="dword" />
            <!--mland2 特殊定义-->
        </type>
        <!-- 旋转请求 -->
        <type name="PKT_CLIGS_ROLE_CHANGEDIR_REQ">
            <item name="TimeStamp" type="dword" />
            <item name="Dir" type="float" />
            <!--旋转方向类型-->
            <item name="RotateType" type="byte" />
        </type>
        <!-- 旋转应答 -->
        <type name="PKT_CLIGS_ROLE_CHANGEDIR_ACK">
            <item name="ErrCode" type="int" />
            <item name="TimeStamp" type="dword" />
            <item name="Dir" type="float" />
        </type>
        <!-- 旋转通知 -->
        <type name="PKT_CLIGS_OBJ_CHANGEDIR_NTF">
            <item name="TimeStamp" type="dword" />
            <item name="ObjID" type="dword" />
            <!--位置-->
            <item name="Dir" type="float" />
            <item name="RotateType" type="byte" />
        </type>
        <!-- npc事件通知 -->
        <type name="PKT_GSCLI_NPC_EVENT_NTF">
            <item name="NpcID" type="dword" />
            <item name="NpcType" type="dword" />
            <item name="EventID" type="dword" />
            <item name="AimX" type="float" />
            <item name="AimY" type="float" />
            <item name="AimZ" type="float" />
            <item name="Dir" type="word" />
            <item name="TargetID" type="dword" />
        </type>
        <!-- 特效请求 -->
        <type name="PKT_CLIGS_SKILL_EFFECT_REQ">
            <item name="PosX" type="float" />
            <item name="PosY" type="float" />
            <item name="PosZ" type="float" />
            <item name="DirX" type="float" />
            <item name="DirY" type="float" />
            <item name="DirZ" type="float" />
            <item name="EffectName" type="tstring" count="128" />
        </type>
        <!-- 特效通知 -->
        <type name="PKT_GSCLI_SKILL_EFFECT_NTF">
            <item name="CasterID" type="dword" />
            <item name="PosX" type="float" />
            <item name="PosY" type="float" />
            <item name="PosZ" type="float" />
            <item name="DirX" type="float" />
            <item name="DirY" type="float" />
            <item name="DirZ" type="float" />
            <item name="EffectName" type="tstring" count="128" />
        </type>
        <!-- 速度请求 -->
        <type name="PKT_CLIGS_ROLE_VELOCITY_REQ">
            <item name="PosX" type="float" />
            <item name="PosY" type="float" />
            <item name="PosZ" type="float" />
            <item name="DirX" type="float" />
            <item name="DirY" type="float" />
            <item name="DirZ" type="float" />
        </type>
        <!-- 速度通知 -->
        <type name="PKT_GSCLI_ROLE_VELOCITY_NTF">
            <item name="CasterID" type="dword" />
            <item name="PosX" type="float" />
            <item name="PosY" type="float" />
            <item name="PosZ" type="float" />
            <item name="DirX" type="float" />
            <item name="DirY" type="float" />
            <item name="DirZ" type="float" />
        </type>
        <!-- 伤害请求 -->
        <type name="PKT_CLIGS_SKILL_DAMAGE_REQ">
            <item name="TargetID" type="dword" />
            <item name="SkillID" type="dword" />
            <item name="EventID" type="dword" />
        </type>
        <!-- 伤害通知 -->
        <type name="PKT_GSCLI_SKILL_DAMAGE_NTF">
            <item name="CasterID" type="dword" />
            <item name="TargetID" type="dword" />
            <item name="DamageValue" type="dword" />
        </type>
        <!-- 角色动作请求 -->
        <type name="PKT_CLIGS_ROLE_ACTION_REQ">
            <item name="ActionID" type="word" />
        </type>
        <!-- 角色动作通知 -->
        <type name="PKT_GSCLI_ROLE_ACTION_NTF">
            <item name="RoleID" type="dword" />
            <item name="ActionID" type="word" />
        </type>
        <!-- 角色换装请求 -->
        <type name="PKT_CLIGS_ROLE_DRESS_REQ">
            <!-- 装备操作类型 1:请求装备 2:请求脱卸 3:替换-->
            <item name="Type" type="byte" />
            <!-- 请求装备的目标物品ID -->
            <item name="DressObjID" type="dword" />
            <!-- 物品在包裹中的位置 -->
            <item name="PKTPos" type="word" />
            <!-- 请求卸载的目标物品ID -->
            <item name="UndressObjID" type="dword" />
            <!-- 请求卸载的所在位置 -->
            <item name="AvatarPos" type="byte" />
        </type>
        <!-- 角色换装应答 -->
        <type name="PKT_CLIGS_ROLE_DRESS_ACK">
            <item name="ErrCode" type="int" />
        </type>
        <!-- 角色外观变化通知 -->
        <type name="PKT_CLIGS_ROLE_APPEARCHANGE_NTF">
            <!-- 角色ID -->
            <item name="ObjID" type="dword" />
            <item name="AvatarInfo" type="CLTDT_AVATAR_INFO" />
        </type>
        <!--       
				主角普通技能攻击请求
				Target：攻击目标ID
				SkillID：技能ID
			  AimX: 技能作用点X坐标
			  AimX: 技能作用点Y坐标
				AimDir：方向
			  -->
        <type name="PKT_CLIGS_SKILL_ATTACK_REQ">
            <item name="Target" type="dword" />
            <item name="SkillID" type="word" />
            <item name="AimX" type="dword" />
            <item name="AimY" type="dword" />
            <item name="AimDir" type="word" />
        </type>
        <!--
				主角普通技能攻击响应
				ErrCode：错误码，0为成功，1...错误等
				Target：攻击目标ID
				SkillID：技能ID
				PrepareState：是否需要聚气，如果需要，客户段开始播放聚气进度条，否则直接播放魔法效果
			  AimX: 技能作用点X坐标
			  AimX: 技能作用点Y坐标
				AimDir：方向
			  -->
        <type name="PKT_CLIGS_SKILL_ATTACK_ACK">
            <item name="ErrCode" type="int" />
            <item name="Target" type="dword" />
            <item name="SkillID" type="word" />
            <item name="PrepareState" type="byte" />
            <item name="AimX" type="dword" />
            <item name="AimY" type="dword" />
            <item name="AimDir" type="word" />
        </type>
        <!--
				生物技能攻击通知，客户端收到后开发播放魔法攻击效果
				CharacterID：攻击者ID
				TargetID：目标ID
				SkillID：技能ID
				PrepareState：是否需要聚气，如果需要，客户段开始播放聚气进度条，否则直接播放魔法效果
			  AimX: 技能作用点X坐标
			  AimX: 技能作用点Y坐标
				AimDir：方向
			   -->
        <type name="PKT_CLIGS_SKILL_ATTACK_NTF">
            <item name="CharacterID" type="dword" />
            <item name="TargetID" type="dword" />
            <item name="SkillID" type="word" />
            <item name="PrepareState" type="byte" />
            <item name="AimX" type="dword" />
            <item name="AimY" type="dword" />
            <item name="AimDir" type="word" />
        </type>
        <!-- 技能变化通知 -->
        <type name="PKT_CLIGS_CREATURE_SKILLCHANGE_NTF">
            <item name="CreatureID" type="dword" />
            <item name="SkillID" type="word" />
            <item name="ChangeType" type="byte" />
        </type>
        <!-- 玩家发起会话 -->
        <type name="PKT_CLIGS_ROLE_CHAT_REQ">
            <item name="ChatType" type="byte" />
            <item name="RoleID" type="dword" />
            <item name="Context" type="tstring" count="MAX_NPC_TALK_LEN" />
        </type>
        <!-- 返回对话给玩家 -->
        <type name="PKT_CLIGS_ROLE_CHAT_NTF">
            <item name="ChatType" type="byte" />
            <item name="RoleID" type="dword" />
            <item name="Context" type="tstring" count="MAX_NPC_TALK_LEN" />
        </type>
        <!-- 客户端汇报加载完成 -->
        <type name="PKT_CLIGS_LOADFINISH_RPT">
            <item name="ErrCode" type="int" />
        </type>
        <!-- 客户端退出游戏服务器 -->
        <type name="PKT_CLIGS_LEAVEGS_REQ">
            <item name="RoleName" type="tstring" count="ROLENAME_LEN" />
            <item name="UserID" type="tstring" count="PTID_LEN" />
            <item name="UserType" type="tstring" count="USERTYPE_LEN" />
        </type>
        <type name="PKT_CLIGS_LEAVEGS_ACK">
            <item name="ErrCode" type="int" />
            <item name="UserType" type="tstring" count="USERTYPE_LEN" />
            <item name="UserID" type="tstring" count="PTID_LEN" />
            <item name="RoleName" type="tstring" count="ROLENAME_LEN" />
        </type>
        <!-- NPC对话 -->
        <!--
						与Npc谈话请求
						NpcID：谈话NPC
						InfoLen：SelectInfo内容长度
						SelectInfo：选择的谈话
				-->
        <type name="PKT_CLIGS_NPC_TALK_REQ">
            <item name="NpcID" type="dword" />
            <item name="InfoLen" type="word" />
            <item name="SelectInfo" type="tstring" count="MAX_NPC_TALK_SELECT_LEN" refer="InfoLen" />
        </type>
        <!--
						NPC谈话响应
						NpcID: 谈话NPC
						InfoLen：Content内容长度
						Content：谈话内容
				-->
        <!--任务相关消息,任务列表回复-->
        <type name="CLTDT_CLIGS_TASKINFO">
            <item name="TaskID" type="dword" />
            <item name="TaskName" type="tstring" count="MAX_TASK_NAME_LEN" />
        </type>
        <type name="PKT_CLIGS_NPC_TALK_SUCC">
            <item name="NpcID" type="dword" />
            <item name="InfoLen" type="word" />
            <item name="Content" type="tstring" count="MAX_NPC_TALK_LEN" refer="InfoLen" />
            <item name="Count" type="byte" />
            <item name="TaskInfo" type="CLTDT_CLIGS_TASKINFO" count="MAX_TASK_COUNT_LEN" refer="Count" />
        </type>
        <type name="PKT_CLIGS_NPC_TALK_FAIL">
            <item name="ErrCode" type="word" />
            <item name="InfoLen" type="word" />
            <item name="FailInfo" type="tstring" count="INFO_LEN" refer="InfoLen" />
        </type>
        <type name="PKT_CLIGS_NPC_TALK_REPLY" class="union">
            <item name="Succ" type="PKT_CLIGS_NPC_TALK_SUCC" id="SUCCESS" />
            <item name="Fail" type="PKT_CLIGS_NPC_TALK_FAIL" id="FAIL" />
        </type>
        <type name="PKT_CLIGS_NPC_TALK_ACK">
            <item name="AckType" type="byte" />
            <item name="Reply" type="PKT_CLIGS_NPC_TALK_REPLY" select="AckType" />
        </type>
        <!--
						NPC结束对话通知
				-->
        <type name="PKT_CLIGS_NPC_TALK_OVER_NTF">
            <item name="NpcID" type="dword" />
        </type>
        <!--  对时 -->
        <!--  
       			对时请求
				-->
        <type name="PKT_CLIGS_SYNCTIME_REQ">
            <item name="ClientTickCnt" type="dword" />
        </type>
        <!--  
        		对时应答
				-->
        <type name="PKT_CLIGS_SYNCTIME_ACK">
            <item name="ErrCode" type="int" />
            <item name="ClientTickCnt" type="dword" />
            <item name="ServerTickCnt" type="dword" />
        </type>
        <!--选择具体任务，查看任务情况请求-->
        <type name="PKT_CLIGS_TASKDETAIL_REQ">
            <item name="NpcID" type="dword" />
            <item name="TaskID" type="dword" />
        </type>
        <!--选择具体任务，查看任务情况回复,目前简化为两种类型的协议，以后再扩充-->
        <type name="CLTDT_CLIGS_TASK_CONTENT">
            <item name="TaskName" type="tstring" count="MAX_TASK_NAME_LEN" />
            <item name="TaskDes" type="tstring" count="MAX_TASK_DES_LEN" />
            <item name="TaskMoney" type="dword" />
            <item name="TaskExp" type="dword" />
        </type>
        <type name="CLTDT_CLIGS_TASK_REPLAY">
            <item name="TaskCurrentContent" type="tstring" count="MAX_TASK_DES_LEN" />
        </type>
        <type name="CLTDT_CLIGS_TASK_DETAIL" class="union">
            <item name="TaskUnAccept" type="CLTDT_CLIGS_TASK_CONTENT" id="TASK_STATE_UNACCEPT" />
            <item name="TaskAccept" type="CLTDT_CLIGS_TASK_REPLAY" id="TASK_STATE_ACCEPT" />
            <item name="TaskFulfil" type="CLTDT_CLIGS_TASK_CONTENT" id="TASK_STATE_FULFIL" />
            <item name="TaskFinish" type="CLTDT_CLIGS_TASK_REPLAY" id="TASK_STATE_FINISH" />
            <item name="TaskFailed" type="CLTDT_CLIGS_TASK_REPLAY" id="TASK_STATE_FAILED" />
        </type>
        <type name="PKT_CLIGS_TASKDETAIL_ACK">
            <item name="TaskID" type="dword" />
            <item name="TaskState" type="byte" />
            <item name="TaskDetail" type="CLTDT_CLIGS_TASK_DETAIL" select="TaskState" />
        </type>
        <!--进行任务相关操作的协议0:接受、1:完成、2:放弃-->
        <type name="PKT_CLIGS_TASKOPERATE_REQ">
            <item name="NpcID" type="dword" />
            <item name="TaskID" type="dword" />
            <item name="TaskOperate" type="byte" />
        </type>
        <type name="PKT_CLIGS_TASKOPERATE_ACK">
            <item name="TaskID" type="dword" />
            <item name="TaskCurState" type="byte" />
            <item name="ErrCode" type="int" />
        </type>
        <type name="PKT_CLIGS_TASKREWARD_NTF">
            <item name="TaskID" type="dword" />
            <item name="TaskMoney" type="dword" />
            <item name="TaskExp" type="dword" />
        </type>
        <!--任务信息通知客户端相关-->
        <type name="PKT_CLIGS_NPC_CHECK">
            <item name="ObjKindId" type="dword" />
            <item name="NeedCount" type="dword" />
            <item name="Killed" type="dword" />
        </type>
        <type name="PKT_CLIGS_ITEM_CHECK">
            <item name="ObjKindId" type="dword" />
            <item name="NeedCount" type="dword" />
            <item name="GetCount" type="dword" />
        </type>
        <type name="PKT_CLIGS_LEVEL_CHECK">
            <item name="TargetLevel" type="dword" />
            <item name="CurLevel" type="dword" />
        </type>
        <type name="PKT_CLIGS_ARRIVE_CHECK">
            <item name="TargetX" type="dword" />
            <item name="TargetY" type="dword" />
            <item name="CurrentX" type="dword" />
            <item name="CurrentY" type="dword" />
        </type>
        <type name="PKT_CLIGS_TIME_CHECK">
            <item name="TargetTime" type="dword" />
            <item name="ElapseTime" type="dword" />
        </type>
        <type name="PKT_CLIGS_TALK_CHECK">
            <item name="bTalk" type="dword" />
        </type>
        <type name="PKT_CLIGS_INSTANCE_CHECK">
            <item name="InstanceID" type="tstring" count="MAX_TASK_DES_LEN" />
            <item name="CaptainNum" type="dword" />
        </type>
        <type name="PKT_CLIGS_TASK_CHECK" class="union">
            <item name="TaskNpc" type="PKT_CLIGS_NPC_CHECK" id="0" />
            <item name="TaskItem" type="PKT_CLIGS_ITEM_CHECK" id="1" />
            <item name="TaskLevel" type="PKT_CLIGS_LEVEL_CHECK" id="2" />
            <item name="TaskArrive" type="PKT_CLIGS_ARRIVE_CHECK" id="3" />
            <item name="TaskTime" type="PKT_CLIGS_TIME_CHECK" id="4" />
            <item name="TaskTalk" type="PKT_CLIGS_TALK_CHECK" id="5" />
            <item name="TaskInstance" type="PKT_CLIGS_INSTANCE_CHECK" id="6" />
        </type>
        <type name="CLTDT_CLIGS_ELEMENT_INFO">
            <item name="CheckType" type="byte" />
            <item name="CheckInfo" type="PKT_CLIGS_TASK_CHECK" select="CheckType" />
        </type>
        <type name="PKT_CLIGS_TASK_INFO">
            <item name="TaskID" type="dword" />
            <item name="TaskCurState" type="byte" />
            <item name="TaskFinishCount" type="byte" />
            <item name="ElementCount" type="byte" />
            <item name="ElementInfo" type="CLTDT_CLIGS_ELEMENT_INFO" count="MAX_TASK_ELEMENT_MAX" refer="ElementCount" />
        </type>
        <type name="PKT_CLIGS_TASKBAG_NTF">
            <item name="ChangeType" type="byte" />
            <item name="Count" type="byte" />
            <item name="TaskInfo" type="PKT_CLIGS_TASK_INFO" count="MAX_TASK_COUNT_LEN" refer="Count" />
        </type>
        <!--道具锻造请求 -->
        <type name="PKT_CLIGS_ITEMSMITHING_REQ">
            <item name="ItemObjID" type="dword" />
        </type>
        <type name="PKT_CLIGS_ITEMSMITHING_ACK">
            <item name="ItemObjID" type="dword" />
            <item name="ErrCode" type="int" />
            <item name="ItemInfo" type="DT_ITEMINFO" />
        </type>
        <!--道具使用请求 -->
        <type name="PKT_CLIGS_ITEMUSE_REQ">
            <item name="ItemObjID" type="dword" />
            <item name="TargetRoleObjID" type="dword" />
            <item name="Pos" type="DT_POS" />
            <item name="ExInfo" type="dword" />
        </type>
        <type name="PKT_CLIGS_ITEMUSE_ACK">
            <item name="ItemObjID" type="dword" />
            <item name="TargetRoleObjID" type="dword" />
            <item name="ErrCode" type="int" />
        </type>
        <!--同步角色属性通知 -->
        <type name="PKT_CLIGS_SYNROLEPROP_NTF">
            <!--体力-->
            <item name="HP" type="dword" />
            <!--法力-->
            <item name="MP" type="dword" />
            <!--攻击属性-->
            <item name="AttackProp" type="DT_ATTACKPROP" />
        </type>
        <!--生物死亡通知 -->
        <type name="PKT_CLIGS_CREATUREDIE_NTF">
            <item name="ObjID" type="dword" />
            <item name="Layer" type="byte" />
            <item name="PosX" type="dword" />
            <item name="PosY" type="dword" />
            <item name="PosZ" type="dword" />
            <item name="Dir" type="word" />
        </type>
        <!--角色自己死亡通知 -->
        <type name="PKT_CLIGS_ROLESELFDIE_NTF">
            <item name="Layer" type="byte" />
            <item name="PosX" type="dword" />
            <item name="PosY" type="dword" />
            <item name="PosZ" type="dword" />
            <item name="Dir" type="word" />
        </type>
        <!--生物伤害通知 -->
        <type name="PKT_CLIGS_CREATUREDAMAGE_NTF">
            <item name="ObjID" type="dword" />
            <item name="DamageType" type="word" />
            <item name="HPLoss" type="dword" />
        </type>
        <!--包裹变化通知 -->
        <type name="PKT_CLIGS_PACKGECHANGE_NTF">
            <!--变化类型，0：修改(客户端只替换掉消息中的ItemsInfo指定的位置)，1：全替换(客户端清空所有的道具，之后将消息中的ItemsInfo赋上)，2：全删除 -->
            <item name="Type" type="byte" />
            <item name="ItemsNum" type="word" />
            <item name="ItemsInfo" type="DT_ITEMINFOPOS" count="MAX_BODYPACKAGE_COUNT" refer="ItemsNum" />
        </type>&gt;
        <!-- NPC商品类型列表通知 -->
        <type name="PKT_CLIGS_NPCITEMKINDLST_NTF">
            <item name="NpcObjID" type="dword" />
            <item name="ItemKindNum" type="word" />
            <item name="ItemKindInfo" type="DT_ITEMKINDINFO" count="MAX_NPCITEMKIND_NUM" refer="ItemKindNum" />
        </type>
        <!-- NPC商品子列表请求 -->
        <type name="PKT_CLIGS_NPCITEMSUBLST_REQ">
            <item name="NpcObjID" type="dword" />
            <item name="ItemKindID" type="dword" />
            <item name="IndexBegin" type="word" />
            <item name="IndexEnd" type="word" />
        </type>
        <!-- NPC商品子列表应答 -->
        <type name="PKT_CLIGS_NPCITEMSUBLST_ACK">
            <item name="NpcObjID" type="dword" />
            <item name="ItemNum" type="word" />
            <item name="ItemInfo" type="DT_ITEMINFO" count="MAX_NPCITEMPERKIND_NUM" refer="ItemNum" />
        </type>
        <!-- NPC说话 -->
        <type name="PKT_CLIGS_NPC_TALK_NTF">
            <item name="NpcObjID" type="dword" />
            <item name="Context" type="tstring" count="MAX_NPC_TALK_LEN" />
        </type>
        <!-- 角色属性更新通知包 -->
        <type name="PKT_GSCLI_ROLE_DATA_UPDATE_NTF">
            <item name="RoleObjID" type="uint64" />
            <item name="RoleInfoLen" type="word" />
            <item name="RoleInfo" type="byte" count="MAX_ROLE_INFO_LEN" refer="RoleInfoLen" />
        </type>
        <type name="FUBEN_MAINSCENE_CHESS_INFO">
            <item name="ObjID" type="dword" />
            <!--动态id-->
            <item name="NpcType" type="dword" />
            <!--客户端用来显示棋子的模型-->
            <item name="Index" type="word" />
            <!--棋盘格子的位置编号-->
        </type>
        <type name="PKT_FUBEN_MAINSCENE_CHESS_LIST_NTF">
            <item name="ChessCount" type="word" />
            <item name="Chesses" type="FUBEN_MAINSCENE_CHESS_INFO" count="50" refer="ChessCount" />
        </type>
        <type name="PKT_CLIGS_SKILL_EVENT_REQ">
            <item name="SkillID" type="dword" />
            <item name="EventID" type="word" />
            <item name="Pos" type="DT_3DPOS" />
            <item name="Dir" type="DT_3DPOS" />
            <item name="TargetCount" type="word" />
            <item name="TagetList" type="dword" count="50" refer="TargetCount" />
        </type>
        <type name="PKT_GSCLI_SKILL_EVENT_NTF">
            <item name="CastID" type="dword" />
            <item name="SkillID" type="dword" />
            <item name="EventID" type="word" />
            <item name="Pos" type="DT_3DPOS" />
            <item name="Dir" type="DT_3DPOS" />
            <item name="TargetCount" type="word" />
            <item name="TagetList" type="dword" count="50" refer="TargetCount" />
        </type>
        <type name="PKT_GSCLI_CHANGE_SCENE_NORMAL_NTF">
            <item name="NextSceneMapTypeId" type="dword" />
        </type>
        <type name="PKT_GSCLI_CHANGE_SCENE_FUBEN_MAINSCENE_NTF">
            <item name="NextSceneMapTypeId" type="dword" />
            <item name="ChessList" type="PKT_FUBEN_MAINSCENE_CHESS_LIST_NTF" />
        </type>
        <type name="PKT_GSCLI_SELF_POSITION_NTF">
            <item name="Pos" type="Base3dPosition" />
        </type>
        <type name="PKT_CLIGS_TRIGGER_ACTION_REQ">
            <item name="TriggerEntityID" type="dword" />
            <item name="TriggerActionID" type="dword" />
            <item name="TriggerID" type="dword" />
        </type>
        <type name="PKT_GSCLI_TRIGGER_ACTION_NTF">
            <item name="TriggerEntityID" type="dword" />
            <item name="TriggerActionID" type="dword" />
            <item name="TriggerRole" type="dword" />
            <item name="TriggerID" type="dword" />
            <item name="Para1" type="dword" />
            <item name="Para2" type="dword" />
            <item name="Para3" type="tstring" count="32" />
            <item name="Para4" type="tstring" count="32" />
        </type>
        <type name="PKT_GSCLI_TRIGGER_ACTION_ACK">
            <item name="TriggerEntityID" type="dword" />
            <item name="TriggerActionID" type="dword" />
            <item name="TriggerRole" type="dword" />
            <item name="TriggerID" type="dword" />
            <item name="Para1" type="dword" />
            <item name="Para2" type="dword" />
            <item name="Para3" type="tstring" count="32" />
            <item name="Para4" type="tstring" count="32" />
        </type>
        <type name="PKT_CLIGS_TRIGGER_DAMAGE_REQ">
            <item name="TriggerEntityID" type="dword" />
            <item name="TriggerID" type="dword" />
        </type>
        <type name="PKT_GSCLI_BEATTACK_EVENT_NTF">
            <item name="TargetID" type="dword" />
            <item name="BeAttackType" type="word" />
            <item name="Vh" type="float" />
            <item name="V0" type="float" />
            <item name="Dir" type="word" />
            <item name="T0" type="float" />
        </type>
    </types>
    <messages>
        <!-- 客户端进入游戏服务器 -->
        <message name="CLIGS_ENTERGS_REQ" id="1000" type="PKT_CLIGS_ENTERGS_REQ" />
        <message name="CLIGS_ENTERGS_ACK" type="PKT_CLIGS_ENTERGS_ACK" />
        <message name="CLIGS_SELF_INFO_NTF" type="PKT_CLIGS_SELF_INFO_NTF" />
        <!-- 玩家对象出现 -->
        <message name="CLIGS_ROLE_APPEAR_NTF" type="PKT_CLIGS_ROLE_APPEAR_NTF" />
        <!-- NPC对象出现 -->
        <message name="CLIGS_NPC_APPEAR_NTF" type="PKT_CLIGS_NPC_APPEAR_NTF" />
        <!-- 对象消失 -->
        <message name="CLIGS_OBJ_DISAPPEAR_NTF" type="PKT_CLIGS_OBJ_DISAPPEAR_NTF" />
        <!-- 玩家移动请求 -->
        <message name="CLIGS_ROLE_MOVE_REQ" type="PKT_CLIGS_ROLE_MOVE_REQ" />
        <!-- 玩家移动应答 -->
        <message name="CLIGS_ROLE_MOVE_ACK" type="PKT_CLIGS_ROLE_MOVE_ACK" />
        <!-- 玩家移动通知 -->
        <message name="CLIGS_OBJ_MOVE_NTF" type="PKT_CLIGS_OBJ_MOVE_NTF" />
        <!-- 玩家换装请求 -->
        <message name="CLIGS_ROLE_DRESS_REQ" type="PKT_CLIGS_ROLE_DRESS_REQ" />
        <!-- 玩家换装应答 -->
        <message name="CLIGS_ROLE_DRESS_ACK" type="PKT_CLIGS_ROLE_DRESS_ACK" />
        <!-- 玩家外观改变通知 -->
        <message name="CLIGS_ROLE_APPEARCHANGE_NTF" type="PKT_CLIGS_ROLE_APPEARCHANGE_NTF" />
        <!-- 玩家技能攻击请求 -->
        <message name="CLIGS_SKILL_ATTACK_REQ" type="PKT_CLIGS_SKILL_ATTACK_REQ" />
        <!-- 玩家技能攻击应答 -->
        <message name="CLIGS_SKILL_ATTACK_ACK" type="PKT_CLIGS_SKILL_ATTACK_ACK" />
        <!-- 玩家对象技能攻击通知 -->
        <message name="CLIGS_SKILL_ATTACK_NTF" type="PKT_CLIGS_SKILL_ATTACK_NTF" />
        <!-- 生物技能变化通知 -->
        <message name="CLIGS_CREATURE_SKILLCHANGE_NTF" type="PKT_CLIGS_CREATURE_SKILLCHANGE_NTF" />
        <!-- 玩家发起对话 -->
        <message name="CLIGS_ROLE_CHAT_REQ" type="PKT_CLIGS_ROLE_CHAT_REQ" />
        <!-- 客户端汇报加载完成 -->
        <message name="CLIGS_LOADFINISH_RPT" type="PKT_CLIGS_LOADFINISH_RPT" />
        <!-- 客户端退出游戏服务器 -->
        <message name="CLIGS_LEAVEGS_REQ" type="PKT_CLIGS_LEAVEGS_REQ" />
        <message name="CLIGS_LEAVEGS_ACK" type="PKT_CLIGS_LEAVEGS_ACK" />
        <!-- ****** npc相关协议 ****** -->
        <!-- 对话请求 -->
        <message name="CLIGS_NPC_TALK_REQ" type="PKT_CLIGS_NPC_TALK_REQ" />
        <!-- 对话应答 -->
        <message name="CLIGS_NPC_TALK_ACK" type="PKT_CLIGS_NPC_TALK_ACK" />
        <!-- 关闭对话 -->
        <message name="CLIGS_NPC_TALK_OVER_NTF" type="PKT_CLIGS_NPC_TALK_OVER_NTF" />
        <!-- 对时请求 -->
        <message name="CLIGS_SYNCTIME_REQ" type="PKT_CLIGS_SYNCTIME_REQ" />
        <!-- 对时应答 -->
        <message name="CLIGS_SYNCTIME_ACK" type="PKT_CLIGS_SYNCTIME_ACK" />
        <!-- 旋转请求 -->
        <message name="CLIGS_ROLE_CHANGEDIR_REQ" type="PKT_CLIGS_ROLE_CHANGEDIR_REQ" />
        <!-- 旋转应答 -->
        <message name="CLIGS_ROLE_CHANGEDIR_ACK" type="PKT_CLIGS_ROLE_CHANGEDIR_ACK" />
        <!-- 旋转通知 -->
        <message name="CLIGS_OBJ_CHANGEDIR_NTF" type="PKT_CLIGS_OBJ_CHANGEDIR_NTF" />
        <!-- npc事件通知 -->
        <message name="GSCLI_NPC_EVENT_NTF" type="PKT_GSCLI_NPC_EVENT_NTF" />
        <!-- 特效请求 -->
        <message name="CLIGS_SKILL_EFFECT_REQ" type="PKT_CLIGS_SKILL_EFFECT_REQ" />
        <!-- 特效通知 -->
        <message name="GSCLI_SKILL_EFFECT_NTF" type="PKT_GSCLI_SKILL_EFFECT_NTF" />
        <!-- 速度请求 -->
        <message name="CLIGS_ROLE_VELOCITY_REQ" type="PKT_CLIGS_ROLE_VELOCITY_REQ" />
        <!-- 速度通知 -->
        <message name="GSCLI_ROLE_VELOCITY_NTF" type="PKT_GSCLI_ROLE_VELOCITY_NTF" />
        <!-- 伤害请求 -->
        <message name="CLIGS_SKILL_DAMAGE_REQ" type="PKT_CLIGS_SKILL_DAMAGE_REQ" />
        <!-- 伤害通知 -->
        <message name="GSCLI_SKILL_DAMAGE_NTF" type="PKT_GSCLI_SKILL_DAMAGE_NTF" />
        <!-- 角色动作请求 -->
        <message name="CLIGS_ROLE_ACTION_REQ" type="PKT_CLIGS_ROLE_ACTION_REQ" />
        <!-- 角色动作通知 -->
        <message name="GSCLI_ROLE_ACTION_NTF" type="PKT_GSCLI_ROLE_ACTION_NTF" />
        <!--　任务相关 -->
        <message name="CLIGS_TASKDETAIL_REQ" type="PKT_CLIGS_TASKDETAIL_REQ" />
        <message name="CLIGS_TASKDETAIL_ACK" type="PKT_CLIGS_TASKDETAIL_ACK" />
        <message name="CLIGS_TASKOPERATE_REQ" type="PKT_CLIGS_TASKOPERATE_REQ" />
        <message name="CLIGS_TASKOPERATE_ACK" type="PKT_CLIGS_TASKOPERATE_ACK" />
        <message name="CLIGS_TASKREWARD_NTF" type="PKT_CLIGS_TASKREWARD_NTF" />
        <message name="CLIGS_TASKBAG_NTF" type="PKT_CLIGS_TASKBAG_NTF" />
        <!--　道具相关 -->
        <message name="CLIGS_ITEMSMITHING_REQ" type="PKT_CLIGS_ITEMSMITHING_REQ" />
        <message name="CLIGS_ITEMSMITHING_ACK" type="PKT_CLIGS_ITEMSMITHING_ACK" />
        <message name="CLIGS_ITEMUSE_REQ" type="PKT_CLIGS_ITEMUSE_REQ" />
        <message name="CLIGS_ITEMUSE_ACK" type="PKT_CLIGS_ITEMUSE_ACK" />
        <!--同步角色属性通知 -->
        <message name="CLIGS_SYNROLEPROP_NTF" type="PKT_CLIGS_SYNROLEPROP_NTF" />
        <!--生物死亡通知 -->
        <message name="CLIGS_CREATUREDIE_NTF" type="PKT_CLIGS_CREATUREDIE_NTF" />
        <!--生物伤害通知-->
        <message name="CLIGS_CREATUREDAMAGE_NTF" type="PKT_CLIGS_CREATUREDAMAGE_NTF" />
        <!--角色自己死亡通知 -->
        <message name="CLIGS_ROLESELFDIE_NTF" type="PKT_CLIGS_ROLESELFDIE_NTF" />
        <!--包裹变化通知 -->
        <message name="CLIGS_PACKGECHANGE_NTF" type="PKT_CLIGS_PACKGECHANGE_NTF" />
        <!--NPC商品列表类型通知 -->
        <message name="CLIGS_NPCITEMKINDLST_NTF" type="PKT_CLIGS_NPCITEMKINDLST_NTF" />
        <!--NPC商品子列表请求 -->
        <message name="CLIGS_NPCITEMSUBLST_REQ" type="PKT_CLIGS_NPCITEMSUBLST_REQ" />
        <!--NPC商品子列表应答 -->
        <message name="CLIGS_NPCITEMSUBLST_ACK" type="PKT_CLIGS_NPCITEMSUBLST_ACK" />
        <!--NPC说话 -->
        <message name="CLIGS_NPC_TALK_NTF" type="PKT_CLIGS_NPC_TALK_NTF" />
        <!--角色信息变更通知-->
        <message name="GSCLI_ROLE_DATA_UPDATE_NTF" type="PKT_GSCLI_ROLE_DATA_UPDATE_NTF" />
        <!--   thb   1200~1400 -->
        <!--进入副本大地图通知棋子列表-->
        <message name="GSCLI_FUBEN_MAINSCENE_CHESS_LIST_NTF" id="1200" type="PKT_FUBEN_MAINSCENE_CHESS_LIST_NTF" />
        <!--对应上面的req，必须有一个ntf返回-->
        <message name="CLIGS_ROLE_CHAT_NTF" id="1201" type="PKT_CLIGS_ROLE_CHAT_NTF" />
        <!--跳转地图的时候，客户端先收到这个协议，然后加载地图，加载完成以后，发送CLIGS_LOADFINISH_RPT报告服务器-->
        <!--普通地图-->
        <message name="GSCLI_CHANGE_SCENE_NORMAL_NTF" id="1202" type="PKT_GSCLI_CHANGE_SCENE_NORMAL_NTF" />
        <!--副本大地图，需要带棋子信息-->
        <message name="GSCLI_CHANGE_SCENE_FUBEN_MAINSCENE_NTF" id="1203" type="PKT_GSCLI_CHANGE_SCENE_FUBEN_MAINSCENE_NTF" />
        <!--客户端进入一个地图，服务器首先告诉玩家角色自己的位置-->
        <message name="GSCLI_SELF_POSITION_NTF" id="1204" type="PKT_GSCLI_SELF_POSITION_NTF" />
        <!--机关触发请求-->
        <message name="CLIGS_TRIGGER_ACTION_REQ" id="1205" type="PKT_CLIGS_TRIGGER_ACTION_REQ" />
        <!--机关触发广播，含义更改，所有收到的客户端需要判断自己是不是在攻击范围以内-->
        <message name="GSCLI_TRIGGER_ACTION_NTF" id="1206" type="PKT_GSCLI_TRIGGER_ACTION_NTF" />
        <!--机关触发响应-->
        <message name="GSCLI_TRIGGER_ACTION_ACK" id="1207" type="PKT_GSCLI_TRIGGER_ACTION_ACK" />
        <!--机关伤害判定请求-->
        <message name="CLIGS_TRIGGER_DAMAGE_REQ" id="1208" type="PKT_CLIGS_TRIGGER_DAMAGE_REQ" />
        <!--   ygz   1500~1800 -->
        <!--人物技能事件请求及广播 -->
        <message name="CLIGS_SKILL_EVENT_REQ" id="1500" type="PKT_CLIGS_SKILL_EVENT_REQ" />
        <message name="GSCLI_SKILL_EVENT_NTF" id="1501" type="PKT_GSCLI_SKILL_EVENT_NTF" />
        <message name="GSCLI_BEATTACK_EVENT_NTF" id="1502" type="PKT_GSCLI_BEATTACK_EVENT_NTF" />
        <!--   lq    1801~1900 -->
    </messages>
</coder>
